﻿using System;
using System.Configuration;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.ComponentModel;
using GanagroLiteData;
using Csla.Validation;

namespace GanagroLiteBO
{
    public partial class GANADO_BO : IEditableObject, INotifyPropertyChanged, IDataErrorInfo
    {
        private bool m_Editing;

        #region Private Fields
        private string _FINCA;
        private string _CODIGO;
        private string _SEXO;
        private short? _RAZA1;
        private short? _RAZA2;
        private float? _PORRAZA1;
        private float? _PORRAZA2;
        private short? _COLOR;
        private short? _PARTOS;
        private short? _ESTADO;
        private DateTime _FECHANAC;
        private string _MADRE;
        private DateTime _FECHADES;
        private string _MARCA;
        private string _COMENTARIO;
        private short? _LOTE;
        private short? _PESO;
        private short? _PesoDestete;
        private bool _Isdirty = false;
        private DateTime _FECHA_ENTRADA;
        private DateTime _FECHASAL;
        private byte? _TIPOSALIDA;
        private byte _Activo;

        #endregion
        #region Public Properties
        public bool Isdirty { get { return _Isdirty; } set { _Isdirty = value; } }
        public string FINCA
        {
            get { return _FINCA; }
            set
            {
                if (_FINCA != value)
                {
                    _FINCA = value;
                    FirePropertyChangedNotification("FINCA");
                }
            }
        }
        public string CODIGO
        {
            get { return _CODIGO; }
            set
            {
                if (_CODIGO != value)
                {
                    _CODIGO = value;
                    FirePropertyChangedNotification("CODIGO");
                }
            }
        }
        public string SEXO
        {
            get { return _SEXO; }
            set
            {
                if (_SEXO != value)
                {
                    _SEXO = value;
                    FirePropertyChangedNotification("SEXO");
                }
            }
        }
        public short? RAZA1
        {
            get { return _RAZA1; }
            set
            {
                if (_RAZA1 != value)
                {
                    _RAZA1 = value;
                    FirePropertyChangedNotification("RAZA1");
                }
            }
        }
        public short? RAZA2
        {
            get { return _RAZA2; }
            set
            {
                if (_RAZA2 != value)
                {
                    _RAZA2 = value;
                    FirePropertyChangedNotification("RAZA2");
                }
            }
        }
        public float? PORRAZA1
        {
            get { return _PORRAZA1; }
            set
            {
                if (_PORRAZA1 != value)
                {
                    _PORRAZA1 = value;
                    FirePropertyChangedNotification("PORRAZA1");
                }
            }
        }
        public float? PORRAZA2
        {
            get { return _PORRAZA2; }
            set
            {
                if (_PORRAZA2 != value)
                {
                    _PORRAZA2 = value;
                    FirePropertyChangedNotification("PORRAZA2");
                }
            }
        }
        public short? COLOR
        {
            get { return _COLOR; }
            set
            {
                if (_COLOR != value)
                {
                    _COLOR = value;
                    FirePropertyChangedNotification("COLOR");
                }
            }
        }
        public short? PARTOS
        {
            get { return _PARTOS; }
            set
            {
                if (_PARTOS != value)
                {
                    _PARTOS = value;
                    FirePropertyChangedNotification("PARTOS");
                }
            }
        }
        public short? ESTADO
        {
            get { return _ESTADO; }
            set
            {
                if (_ESTADO != value)
                {
                    _ESTADO = value;
                    FirePropertyChangedNotification("ESTADO");
                }
            }
        }
        public DateTime FECHANAC
        {
            get { return _FECHANAC; }
            set
            {
                if (_FECHANAC != value)
                {
                    _FECHANAC = value.Date;
                    FirePropertyChangedNotification("FECHANAC");
                }
            }
        }
        public string MADRE
        {
            get { return _MADRE; }
            set
            {
                if (_MADRE != value)
                {
                    _MADRE = value;
                    FirePropertyChangedNotification("MADRE");
                }
            }
        }
        public DateTime FECHADES
        {
            get { return _FECHADES; }
            set
            {
                if (_FECHADES != value || (_FECHADES < DateTime.Now.AddYears(-100)))
                {
                    if (value < DateTime.Now.AddYears(-100))
                    {
                        _FECHADES = Convert.ToDateTime("1900-01-01 00:00:00");
                    }
                    else
                    {
                        _FECHADES = value.Date;
                        FirePropertyChangedNotification("FECHADES");
                    }
                }
            }
        }
        public string MARCA
        {
            get { return _MARCA; }
            set
            {
                if (_MARCA != value)
                {
                    _MARCA = value;
                    FirePropertyChangedNotification("MARCA");
                }
            }
        }
        public string COMENTARIO
        {
            get { return _COMENTARIO; }
            set
            {
                if (_COMENTARIO != value)
                {
                    _COMENTARIO = value;
                    FirePropertyChangedNotification("COMENTARIO");
                }
            }
        }
        public short? LOTE
        {
            get { return _LOTE; }
            set
            {
                if (_LOTE != value)
                {
                    _LOTE = value;
                    FirePropertyChangedNotification("LOTE");
                }
            }
        }
        public short? PESO
        {
            get { return _PESO; }
            set
            {
                if (_PESO != value)
                {
                    _PESO = value;
                    FirePropertyChangedNotification("PESO");
                }
            }
        }
        public short? PesoDestete
        {
            get { return _PesoDestete; }
            set
            {
                if (_PesoDestete != value)
                {
                    _PesoDestete = value;
                    FirePropertyChangedNotification("PesoDestete");
                }
            }
        }
        public DateTime FECHA_ENTRADA
        {
            get { return _FECHA_ENTRADA; }
            set
            {
                if (_FECHA_ENTRADA != value || (_FECHA_ENTRADA < DateTime.Now.AddYears(-100)))
                {
                    if (value < DateTime.Now.AddYears(-100))
                    {
                        _FECHA_ENTRADA = Convert.ToDateTime("1900-01-01 00:00:00");
                    }
                    else
                    {
                        _FECHA_ENTRADA = value;
                        FirePropertyChangedNotification("FECHA_ENTRADA");
                    }
                }
            }
        }
        public DateTime FECHASAL
        {
            get { return _FECHASAL; }
            set
            {
                if (_FECHASAL != value || (_FECHASAL < DateTime.Now.AddYears(-100)))
                {
                    if (value < DateTime.Now.AddYears(-100))
                    {
                        _FECHASAL = Convert.ToDateTime("1900-01-01 00:00:00");
                    }
                    else
                    {
                        _FECHASAL = value.Date;
                        FirePropertyChangedNotification("FECHA_ENTRADA");
                    }
                }
            }
        }
        public byte? TIPOSALIDA
        {
            get { return _TIPOSALIDA; }
            set
            {
                if (_TIPOSALIDA != value)
                {
                    _TIPOSALIDA = value;
                    FirePropertyChangedNotification("TIPOSALIDA");
                    TipoSalidaDesc =  (value == null) ? string.Empty : utilities.GetDescOperacion((TiposOperacion)value);
                    FirePropertyChangedNotification("TipoSalidaDesc");
                }
            }
        }
        public byte Activo
        {
            get { return _Activo; }
            set
            {
                if (_Activo != value)
                {
                    _Activo = value;
                    FirePropertyChangedNotification("Activo");
                    FirePropertyChangedNotification("Inactivo");
                }
            }
        }
        public bool Inactivo
        {
            get { return (_Activo == 0); }
        }

        public bool Existe { get; set; }
        #endregion
    }

}